控制系统设计与仿真实验指导书.docx | 您所在的位置:网站首页 › matlab fplot ezplot › 控制系统设计与仿真实验指导书.docx |
控制系统设计与仿真实验指导书.docx 《控制系统设计与仿真实验指导书.docx》由会员分享,可在线阅读,更多相关《控制系统设计与仿真实验指导书.docx(44页珍藏版)》请在冰豆网上搜索。 控制系统设计与仿真实验指导书
控制系统设计与仿真实验 1.说明 《MATLAB语言与控制系统仿真实验指导书》包括四部分内容: MATLAB语言基础、MATLAB语言基础实验、控制理论仿真实验和实验作业。 要求每位学生完成规定的实验内容后,独立做完实验作业,以巩固知识,增强应用能力。 本课程上机实验学时为18学时,建议分配如下: 实验内容 学时数 备注 实验一MATLAB语言平台 3 选做 3 选做 3 选做 3 必做 3 必做 3 选做 3 选做 3 选做 3 必做 实验十一直流调速系统仿真与设计 3 设计性实验选做 实验十二倒立摆系统控制算法的状态空间法设计 3 综合性实验选做 上述学时仅为参考学时,学生可根据自己对MATLAB的熟悉程度作适当的调整。
2.MATLAB语言简介 MATLAB是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境。 MATLAB的推出得到了各个领域专家学者的广泛关注,其强大的扩展功能为各个领域的应用提供了基础,现已成为国际控制界应用最广的首选计算机工具。 控制界的很多知名学者度为其擅长的领域写出工具箱,而其中很多工具箱已经成为该领域的标准。 和其它的程序设计语言不同,MATLAB语言的基本变量单元是复数矩阵,其矩阵处理功能和图形处理功能是其最显著的特色,这里介绍一些简单实用的MATLAB命令及操作。 2.1MATLAB的应用基础 1.如何应用MATLAB 通常以命令驱动方式应用MATLAB。 当输入单个命令时,MATLAB会立即对其进行处理,并且显示处理结果。 MATLAB也能够执行存储在文件中的命令序列。 通过键盘输入的命令,可以用上下箭头键存取。 2.MATLAB的变量 MATLAB的一个特点是变量在应用前不必确定维数。 在MATLAB中,变量一旦被采用,会自动产生(如果必要,变量的维数以后还可改变),并保留在存储器中。 为了得到工作空间内的变量清单,可以通过键盘输入命令who,当前存放在工作空间内的所有变量便会显示在屏幕上。 命令clear能从工作空间中清除所有非永久性变量。 如果只需要从工作空间中清除某个特定变量,比如“x”,则应输入命令clearx。 3.以“%”开始的程序行 在MATLAB中以“%”开始的行表示注解和说明,这些注解和说明是不执行的。 如果注解和说明需要一行以上程序行,则每一行均需以“%”为起始。 4.分号操作符 分号用来取消打印(显示)。 如果语句的最后一个符号是分号,则打印被取消,但是命令仍在执行,而结果不再显示。 此外,在输入矩阵时,分号表示一行的结束。 5.冒号操作符 冒号操作符在MATLAB中起着重要作用。 该操作符用来建立行向量,赋予矩阵下标和规定叠代。 例如: j: k表示[jj+1…k-1k],A(: j)表示矩阵A的第j列。 6.输入超过一行的长句 如果输入的语句太长,超出了一行,则在语句的末尾输入3个小圆点(…),以表明语句将延续到下一行。 7.在一行内输入数个语句 如果语句之间用豆号或分号隔开,则可以把数个语句放在一行内。 例如: plot(1,3,'o'),text(1,20,'system1'),text(1,15,'system2') 8.选择输出格式 MATLAB中的所有计算都是以双精度方式完成的,但是显示输出可以是具有4个小数位的定点输出。 例如,对于向量 x=[1/3,0.00002] MATLAB有下列输出 x= 0.33330.0000 如果在矩阵中至少有一个元素不是严格的整数,则有多种可能的输出格式。 显示的输出量可以用【File】菜单的【Preferences】命令设置,或用下列命令加以控制: formatshort(0.33330.0000) formatlong(0.333333333333330.00002000000000) formatshorte(3.3333e-0012.0000e-005) formatlonge(3.333333333333333e-0012.000000000000000e-005) 9.退出MATLAB时如何保存变量 当退出MATLAB时,工作空间中的所有变量都将消失。 如果在退出之前输入命令save,则所有的变量都被保存在磁盘文件matlab.mat文件中。 当再次进入MATLAB时,命令load将使工作空间恢复到以前的状态。 如果要保存/恢复部分变量,可用如下命令: save文件名变量名(变量名之间用空格分割)/load文件名 参见save命令的帮助文件。 2.2MATLAB函数 在当前的MATLAB5.0及以上版本中,MATLAB函数的调用格式和其它编程语言是不同的,其典型的调用格式为 [返回变量列表]=func_name(输入变量列表) 其中等号左边的变量为返回变量,等号右边的变量为输入变量。 MATLAB允许在函数调用时返回多个变量。 而一个函数又可以由多种格式进行调用,例如bode()函数可以由下面的格式调用 [mag,phase]=bode(num,den,w) 其中bode()函数用来求取或绘制系统的Bode图,而系统在这里由传递函数分子num和分母den表示,还可以用下面的格式调用此函数 [mag,phase]=bode(A,B,C,D,w) 其中(A,B,C,D)为系统的状态方程模型。 尽管两种调用格式是完全不同的,MATLAB函数还是会自动识别到底是用哪种格式调用该函数的,从而得出正确的结论。 在当前版本的控制系统工具箱中还允许用线性模型对象变量G来描述系统,例如 [mag,phase]=bode(G,w) MATLAB函数在返回变量的格式上也可以不同,例如若上面的语句中若没有返回变量,则将自动地绘制系统的Bode图,否则返回计算结果数据。 2.3绘制响应曲线 MATLAB具有丰富的获取图形输出的程序集。 命令plot可以产生线性x-y图形(用命令loglog、semilogx、semilogy或polar取代plot,可以产生对数坐标图和极坐标图)。 所有这些命令的应用方式都是相同的,它们只对坐标轴的分度和数据的显示产生影响。 1.X-Y图 如果X和Y是同一长度的向量,则命令 plot(X,Y) 将画出Y值对于X值的关系图。 2.画多条曲线 为了在一幅图上画出多条曲线,采用具有多个自变量的plot命令: plot(X1,Y1,X2,Y2,…,Xn,Yn) 变量X1,Y1,X2,Y2等等是一些向量对。 每一个X-Y对都可以图解表示出来,因而在一幅图上形成多条曲线。 多重变量的优点是它允许不同长度的向量在同一幅图上显示出来,每一对向量采用不同的线型。 在一幅图上画一条以上的曲线时,也可以利用命令hold。 hold命令可以保持当前的图形,并且防止删除和修改比例尺。 因此,随后的一条曲线将会重叠地画在原曲线上。 再次输入命令hold,会使当前的图形复原。 3.加进网格线、图形标题、X轴标记和Y轴标记 一旦在屏幕上显示出图形,就可以画出网格线,定出图形标题,并且标定x轴标记和y轴标记。 MATLAB中关于网格线、标题、X轴标记和Y轴标记的命令如下: grid(网格线) title(图形标题) xlabel(X轴标记) ylabel(Y轴标记) 4.在图形屏幕上书写文本 为了在图形屏幕上的点(x,y)书写文本,采用命令: text(x,y,'text') 例如,利用语句 text(3,0.45,'sint') 将从点(3,0.45)开始,水平地写出sint。 5.图形类型 下列语句: plot(x,y,'x') 将利用标记符号×画出一个点状图。 MATLAB能够提供的线和点的类型如下: 线的类型 点的类型 实线 - 圆点 . 短划线 -- 加号 + 虚线 : 星号 * 点划线 -. 圆圈 o ×号 x 6.颜色 下列语句: plot(X,Y,'+g') 表明用绿色“+”号划线。 MATLAB提供的颜色如下: 红色 r 绿色 g 蓝色 b 白色 w 无色 i 参见plot的帮助文件。 7.自动绘图算法 在MATLAB中,图形是自动定标的。 在另一幅图形画出之前,这幅图形作为现行图将保持不变,但是在另一幅图形画出后,原图形将被删除,坐标轴自动地重新定标。 8.手工坐标定标 如果需要在下列语句指定的范围内绘制曲线: V=[x-minx-maxy-miny-max] 则因输入命令axis(V),式中V是一个四元向量。 axis(V)把坐标轴定在规定的范围内。 2.4MATLAB语言的联机帮助功能 下面的实验中,我们将较为详细地学习使用MATLAB的语言基础和控制系统仿真,但是MATLAB的内容及其丰富,在学习和使用中,可以利用MATLAB的联机帮助功能。 MATLAB的联机帮助既可以由help命令来直接获得,又可以由MATLAB图形界面下的Help菜单来查询,还可以用lookfor命令查询有关的关键词: >>helpplot >>lookforplot 3.MATLAB语言基础实验 3.1实验一MATLAB语言平台 一、实验目的 1.学习了解MATLAB语言环境; 2.练习MATLAB命令的基本操作; 3.练习m文件的基本操作。 二、实验内容 1.学习了解MATLAB语言环境 (1)MATLAB语言操作界面 开机双击相应图标即可进入MATLAB命令窗口,如图1.1所示。 在命令提示符位置键入命令,完成下述练习。 图1.1MATLAB窗口 (2)练习DOS相似命令 MATLAB语言与DOS操作系统有如下相似的命令,在操作界面上练习这些命令。 dirdir('c: \windows') typetypeexpm.m cdcdc: \matlab6p5\help (3)MATLAB的数据格式 合法的数据格式有: short,long,hex,shorte,longe,rational等。 键入 a=pi;b=exp (1) 由File/Preferences…改变数据格式,观察变量值。 (4)变量查询 变量查询命令有who,whos,查询变量。 (5)路径函数与搜索路径 path路径函数 which文件定位 路径函数path列出MATLAB自动搜索路径清单,执行该命令。 path(path,'newpath') addpath('newpath') 用于在搜索路径清单中增加新的路径项,练习该命令。 或由File/SetPath…设置路径。 说明: 在命令窗口键入一命令并按下回车键,MATLAB就在搜索路径中搜索相应的命令文件(内部命令和函数除外),找到后就执行该文件,若未找到,就给出错误提示“File'xxxx'notfound.”。 (6)联机帮助 键入 helphelp 阅读help函数的使用说明。 键入 help 列出help项。 查询前面使用过的命令 helpwho helppath 阅读上述函数的功能、使用格式等。 (7)字符串查询 键入 helplookfor 阅读MATLAB函数lookfor的功能与使用方法,并使用该命令查询相应的关键词字符串。 (8)MATLAB语言演示 键入 demo MATLAB语言功能演示。 2.练习MATLAB命令的基本操作 (1)键入常数矩阵输入命令 a=[123] a=[1;2;3] 比较显示结果有何不同。 b=[125] b=[125]; 比较显示结果有何不同。 (2)作循环命令程序 makesum=0; fori=1: 1: 100 makesum=makesum+i; end 键入makesum,按回车键,观察计算结果。 (3)分别执行下面命令: a=[123;456;780] poly(a) rank(a) det(a) trace(a) inv(a) eig(a) 观察显示结果。 使用联机帮助help查阅相应函数的意义和函数的格式。 3.2实验二MATLAB数值运算 一、实验目的 1.学习MATLAB的基本矩阵运算; 2.学习MATLAB的点运算。 二、实验内容 在下面的实验操作中,认真执行每项操作,掌握其作用和目的。 1.基本矩阵运算 (1)创建数值矩阵 键入 a=[123;456;789]; 观察 a(3,2) a(: 1) 键入 t=0: 10; u=0: 0.1: 10; 观察向量t,u的值。 键入 a(: 3)=[2;3;4]; a 观察矩阵a的变化。 键入 b=[11+2i;3+4i3]; 观察复数矩阵。 (2)特殊矩阵 键入 a=ones(3,3); b=zeros(2,2); c=eye(4); magic(4); 观察特殊矩阵。 (3)矩阵运算 键入 a=[010;001;-6-11-6]; b=[12;34;56]; c=[110;011]; 作矩阵乘运算: v1=c*a; v2=a*b; v3=c*a*b; v4=b*c; v5=c*b; 矩阵乘方运算: a^2 a^(1/2) 矩阵加减运算: a1=a+b*c; a2=c*b-a(1: 2,1: 2); a3=a(1: 2,2: 3)+c*b; 矩阵右除(常规除): ar=a/b; 矩阵左除: al=a\b 注意矩阵运算时的维数匹配。 (4)矩阵特征 完成如下矩阵特征运算: a'inv(a)diag(a)tril(a)triu(a) poly(a)rank(a)det(a)trace(a)eig(a) 2.MATLAB的点运算 (1)练习点乘与点除 a1=[12;34]; a2=0.2*a1; 观察 [a1a2] [a1.*a2a1./a2] (点乘与点除是数组运算) (2)正弦、余弦函数 t=0: 2*pi/180: 2*pi; y1=sin(t);y2=cos(t); y=y1.*y2; plot(t,[y'y1'y2'] (3)复变函数 w=0.1: 0.1: 2; g1=(1+0.5*w*i)/(1-0.5*w*i) g2=(1+0.5*w*i)./(1-0.5*w*i) plot(g2);xlabel('realg2(w)');ylabel('imageg2(w)') axis('square') 3.多项式运算 (1)建立多项式向量 ap=[1331] b=[-1-2-3] bp=poly(b) (2)多项式乘与根 p=conv(ap,bp) root(p) (3)多项式运算 a=[1234];b=[1-1]; c=a+[zeros(1,length(a)-length(b)),b] poly2str(c,'x') polyvalm(a,3) 4.代数方程组 (1)给定方程组 Ax=Bxn×1,An×n,Bn×1 方程组的解 x=A-1Borx=A\B 方程为 这时不能用第一种方法,A-1只能用于方阵,这时可用广义逆矩阵解: A=[123;234];B=[1;2]; x=pinv(A)*B x= 0.8333 0.3333 -0.1667 3.3实验三MATLAB绘图 一、实验目的 1.学习MATLAB的各种二维绘图; 2.学习MATLAB的三维绘图; 3.学习MATLAB的绘图修饰(多种绘图,图形注释,绘图颜色,色图矩阵)。 二、实验内容 在下面的实验操作中,认真执行每项操作,掌握其作用和目的,每个命令的含义和用法查看帮助文件。 1.基本二维绘图 (1)向量绘图 x=0: 2*pi/100: 2*pi; y1=sin(2*x);y2=cos(2*x); plot(x,y1) plot(x,y2) plot(x,y1,x,y2) 保持作图: plot(x,y1);holdon plot(x,y2);holdoff 矩阵作图: plot(x',[y1'y2']) 设定颜色与线型: plot(x,y1,'c: ',x,y2,'ro') 多窗口绘图: figure (1);plot(x,y1) figure (2);plot(x,y2) 子图绘图: subplot(221);plot(x,y1) subplot(222);plot(x,y2) subplot(223);plot(x,y1,x,y1+y2) subplot(224);plot(x,y2,x,y1-y2) 复变函数绘图: w=0.01: 0.01: 10; g=1./(1+2*w*i); subplot(121);plot(g) subplot(122);plot(real(g),imag(g)) 插值绘图: x=0: 2*pi/8: 2*pi;y=sin(x); plot(x,y,'o');holdon; xi=0: 2*pi/100: 2*pi; yi=spline(x,y,xi); plot(xi,yi,'m') 反白绘图与绘图背景色设定: whitebg whitebg('b') whitebg('k') (2)函数绘图 fplot('sin',[04*pi]) f='sin(x)';fplot(f,[04*pi]) fplot('sin(1/x)',[0.010.1],1e-3) fplot('[tan(x),sin(x),cos(x)]',[-2*pi,2*pi,-2*pi,2*pi]) (3)符号函数快捷绘图: f='exp(-0.5*x)*sin(x)' ezplot(f,[0,10]) f='x^2+y^2-9' ezplot(f) axisequal 2.多种二维绘图 (1)半对数绘图(频率特性绘图) w=logspace(-1,1);横坐标对数分度 g=20*log10(1./(1+2*w*I))幅值纵坐标取分贝 p=angle(1./(1+2*w*I))*180/pi相角纵坐标取度 subplot(211);semilogx(w,g);grid;幅频特性子图,半对数绘图,加网线 subplot(212);semilogx(w,p);grid;相频特性子图,半对数绘图,加网线 (2)极坐标绘图 t=0: 2*pi/180: 2*pi; mo=cos(2*t); polar(t,mo); (3)直方图绘图 t=0: 2*pi/8: 2*pi; y=sin(t); bar(t,y); (4)离散棒图 t=0: 2*pi/8: 2*pi; y=sin(t); stem(t,y); (5)阶梯图 t=0: 2*pi/8: 2*pi; y=sin(t); stairs(t,y); (6)彗星绘图 t=-pi: pi/200: pi; comet(t,tan(sin(t))-sin(tan(t))); 3.图形注释 fplot('[sin(t),cos(t)]',[0,5]); title('曲线') xlabel('时间t');ylabel('幅值y'); gtext('正弦函数'); gtext('余项函数'); grid 4.三维绘图 (1)三维线图 t=0: pi/50: 10*pi; plot3(sin(t),cos(t),t); comet3(sin(t),cos(t),t); (2)单变量高度网线图 Z2=[11;1–1]; Z4=[Z2Z2;Z2–Z2]; Z8=[Z4Z4;Z4–Z4]; mesh(Z8) (3)3变量马鞍面网线图 x=-4: 0.5: 4;y=x; [X,Y]=meshgrid(x,y); Z=X.^2-Y.^2; mesh(X,Y,Z) (4)圆锥面网线图 t1=0: 0.1: 0.9; t2=0: 0.1: 2; r=[t1,-t2+2]; [x,y,z]=cylinder(r,40); mesh(x,y,z) (5)视角修饰 t1=0: 0.1: 0.9; t2=0: 0.1: 2; r=[t1,-t2+2]; [x,y,z]=cylinder(r,40); mesh(x,y,z) subplot(2,2,1);mesh(x,y,z);view(0,0); subplot(2,2,2);mesh(x,y,z);view(-20,20); subplot(2,2,3);mesh(x,y,z);view(-30,30); subplot(2,2,4);mesh(x,y,z);view(-40,40); (6)暖色(hot)色图 peaks(20); axis('off'); colormap(hot); colorbar('horiz'); (7)光照修饰 surfl(peaks(20)); colormap(gray); shadinginterp; (8)透视与消隐 P=peaks(30); subplot(121);mesh(P);hiddenoff; subplot(122);mesh(P);hiddenon; 3.4实验四MATLAB句柄绘图 一、实验目的 1.学习图形对象(griphics)和句柄(handle)的基本知识; 2.学习图形对象属性(objectproperties)的获得与设置; 3.基本句柄绘图(handlegriphics)操作; 二、句柄绘图的基本原理 1.基本图形对象 根屏幕(Root) 图形窗口(Figure) 界面控制(Uicontrol) 界面菜单(Uimenu) 轴(Axes) 线(Line) 块(Patch) 面(Surface) 像(Image) 字(Text) 2.图形对象创建函数 h=figure(n);n为窗口号数 h=uicontrol('property',value);确定控制类型 h=uimenu('property',value);确定菜单形式 h=axes('position',[left,bottom,width,height]);丁一周 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |